#pragma once
#include "Actor.h"

namespace _MODULE_
{
	namespace _GAME_
	{
		foDeclareBoost_MITag(UniqName);
		foDeclareBoost_MITag(TypeName);
		foDeclareBoost_MITag(TagName);

		
		typedef boost_MI_container<
			::_P_GAME::Actor*,
		  boost_MI_indexed_by<
			boost_MI_ordered_unique<
				boost_MI_tag<::_M_GAME::UniqName>, 
				BOOST_MULTI_INDEX_CONST_MEM_FUN(::_FO_GDB::aDataPartBase,const ::_FO_UTIL::Name&,GetUniqName)>,

			boost_MI_ordered_non_unique<
				boost_MI_tag<::_M_GAME::TypeName>, 
				BOOST_MULTI_INDEX_CONST_MEM_FUN(::_FO_GDB::aDataPartBase,const ::_FO_UTIL::Name&,GetTypeName)>,

			boost_MI_ordered_non_unique<
				boost_MI_tag<::_M_GAME::TagName>, 
				BOOST_MULTI_INDEX_CONST_MEM_FUN(::_M_GAME::TriggerListener,const ::_FO_UTIL::Name&,GetTagName)> >

		> Actor_MISet;


		typedef Actor_MISet::index<::_M_GAME::UniqName>::type Actor_MISet_By_Uniq;
		typedef Actor_MISet::index<::_M_GAME::TypeName>::type Actor_MISet_By_Type;
		typedef Actor_MISet::index<::_M_GAME::TagName>::type Actor_MISet_By_Tag;
	}
}